package com.gitee.helioz.openai.api.dto.chat;

import com.gitee.helioz.openai.api.dto.UsageDTO;
import com.google.gson.annotations.SerializedName;
import lombok.Data;

import java.util.List;

/**
 * 〈聊天式对话补全响应〉
 *
 * @author <a href="https://gitee.com/helioz">Morning Starr</a>
 */
@Data
public class ChatCompletionResponse {
    /**
     * 生成的聊天完成任务的唯一标识符
     */
    private String id;
    /**
     * 表示 API 返回的对象类型，固定为 "chat.completion"
     */
    private String object;
    /**
     * 表示生成聊天完成任务的时间戳，单位为秒
     */
    private Long created;
    /**
     * 包含了生成的聊天完成结果的数组，每个结果对应一个 choice 对象
     */
    private List<ChatChoice> choices;
    /**
     * 包含了 API 调用的使用情况统计信息。
     */
    private UsageDTO usage;

    @Data
    public static class ChatChoice {
        /**
         * 表示生成的结果在 messages 数组中的索引
         */
        private Integer index;
        /**
         * 消息对象，包含了生成的聊天回复的信息
         */
        private Message message;
        /**
         * 表示生成聊天完成的原因，例如 "stop"、"max_tokens" 等。
         */
        @SerializedName("finish_reason")
        private String finishReason;
    }

    @Data
    public static class Message {
        /**
         * 表示聊天回复的角色，例如 "assistant"、"user" 等。
         */
        private String role;
        /**
         * 表示聊天回复的内容。
         */
        private String content;
    }

}
